#ifndef _BASESKILL_H_
#define _BASESKILL_H_

#include "cocos2d.h"

class CatsManager;
class GameManager;

class BaseSkill : public cocos2d::CCSprite
{
protected:
	//Skill description
	int						_skillType;
	cocos2d::CCString*		_skillDescription;
	cocos2d::CCString*		_skillName;

	//Game play values
	cocos2d::CCSprite* 		_skillEffectSprite;
	bool					_isSkillActivated;
	int						_chargePointRequired;
	int						_skillDamage;

	float 					RECT_BUFFER_RADIUS; // radius pixels to reduce collision box

public:
	//===== CONSTRUCTOR =====
	BaseSkill();
	//light load
	BaseSkill(int skilltype, cocos2d::CCString *skillname, cocos2d::CCString *skilldescription);

	//===== DESTRUCTOR =====
	~BaseSkill();

	//===== SETTERS =====

	//===== GETTERS =====
	virtual cocos2d::CCRect getSkillEffectRect();
	int						returnChargePoint(){ return _chargePointRequired; };
	int						returnSkillDamage(){ return _skillDamage; };
	int						returnSkillType(){ return _skillType; };
	cocos2d::CCString*		returnSkillName(){ return _skillName; };
	cocos2d::CCString*		returnSkillDescription(){ return _skillDescription; };

	//====== FUNCTION =====
	virtual void			activateSkill();
	void					checkToEnableSkillButton(int currentchargepoints);

	static BaseSkill* 		loadSkill(cocos2d::CCString filename);

	virtual void			update(float timeDiff, CatsManager* pCatsRef, int chargepoints);

	virtual bool			touchesBegan(cocos2d::CCPoint location, GameManager *mygamemanager);
	virtual void 			touchesMoved(cocos2d::CCPoint location);
};

#endif
